package hotel.dao;

import java.util.List;

public interface IDao<T> {

	/** 保存*/
	public boolean save(Object obj);
	
	/** 保存后返回该实体，需要用到主键时使用*/
	public Object saveAndReturn(Object obj);
	
	/** 更新*/
	public boolean update(T obj);
	
	/** 删除*/
	public boolean delete(T obj);
	
	/** 根据主键id删除*/
	public boolean deleteById(String upperCaseClazz,int id);
	
	/** 根据主键id查找*/
	public T findById(Class<T> clazz,int id);
	
	/** 查找第一条数据*/
	public T findFirstResult(String hql);
	
	/** 获得记录总条数*/
	public int getTotalCount(String entityName);
	
	/** 根据给出的HQL语句查找所有*/
	public List<T> list(String hql);
	
	/** 查找所有*/
	public List<T> listAll(String entityName);
	
	/** 分页查询*/
	public List<T> paging(String entityName,int firstResult,int maxResult);
	
	/** 根据给出的SQL语句查询*/
	public List<Object[]> sqlQuery(String sql);
	
	/** 执行更新*/
	public boolean executeUpdate(String hql);
	
	/** 唯一结果，如sum、count等SQL*/
	public String uniqueResult(String hql);
}
